home *** CD-ROM | disk | FTP | other *** search
- package javax.swing.plaf.basic;
-
- import java.awt.Color;
- import java.awt.Component;
- import java.awt.Dimension;
- import java.awt.Font;
- import java.awt.FontMetrics;
- import java.awt.Graphics;
- import java.awt.Insets;
- import java.awt.Rectangle;
- import javax.swing.AbstractButton;
- import javax.swing.ButtonModel;
- import javax.swing.Icon;
- import javax.swing.JComponent;
- import javax.swing.LookAndFeel;
- import javax.swing.SwingUtilities;
- import javax.swing.UIManager;
- import javax.swing.border.Border;
- import javax.swing.plaf.ButtonUI;
- import javax.swing.plaf.ComponentUI;
- import javax.swing.plaf.UIResource;
- import javax.swing.text.View;
-
- public class BasicButtonUI extends ButtonUI {
- private static final BasicButtonUI buttonUI = new BasicButtonUI();
- protected int defaultTextIconGap;
- private int shiftOffset = 0;
- protected int defaultTextShiftOffset;
- private boolean defaults_initialized = false;
- private static final String propertyPrefix = "Button.";
- private Color defaultForeground = null;
- private Color defaultBackground = null;
- private Font defaultFont = null;
- private Border defaultBorder = null;
- private static Rectangle viewRect = new Rectangle();
- private static Rectangle textRect = new Rectangle();
- private static Rectangle iconRect = new Rectangle();
-
- protected void clearTextShiftOffset() {
- this.shiftOffset = 0;
- }
-
- protected BasicButtonListener createButtonListener(AbstractButton var1) {
- return new BasicButtonListener(var1);
- }
-
- public static ComponentUI createUI(JComponent var0) {
- return buttonUI;
- }
-
- public int getDefaultTextIconGap(AbstractButton var1) {
- return this.defaultTextIconGap;
- }
-
- public Dimension getMaximumSize(JComponent var1) {
- Dimension var2 = this.getPreferredSize(var1);
- View var3 = (View)var1.getClientProperty("html");
- if (var3 != null) {
- var2.width = (int)((float)var2.width + (var3.getMaximumSpan(0) - var3.getPreferredSpan(0)));
- }
-
- return var2;
- }
-
- public Dimension getMinimumSize(JComponent var1) {
- Dimension var2 = this.getPreferredSize(var1);
- View var3 = (View)var1.getClientProperty("html");
- if (var3 != null) {
- var2.width = (int)((float)var2.width - (var3.getPreferredSpan(0) - var3.getMinimumSpan(0)));
- }
-
- return var2;
- }
-
- public Dimension getPreferredSize(JComponent var1) {
- AbstractButton var2 = (AbstractButton)var1;
- return BasicGraphicsUtils.getPreferredButtonSize(var2, this.defaultTextIconGap);
- }
-
- protected String getPropertyPrefix() {
- return "Button.";
- }
-
- protected int getTextShiftOffset() {
- return this.shiftOffset;
- }
-
- protected void installDefaults(AbstractButton var1) {
- String var2 = this.getPropertyPrefix();
- if (!this.defaults_initialized) {
- this.defaultTextIconGap = (Integer)UIManager.get(var2 + "textIconGap");
- this.defaultTextShiftOffset = (Integer)UIManager.get(var2 + "textShiftOffset");
- this.defaults_initialized = true;
- }
-
- if (var1.isContentAreaFilled()) {
- ((JComponent)var1).setOpaque(true);
- } else {
- ((JComponent)var1).setOpaque(false);
- }
-
- if (var1.getMargin() == null || var1.getMargin() instanceof UIResource) {
- var1.setMargin(UIManager.getInsets(var2 + "margin"));
- }
-
- LookAndFeel.installColorsAndFont(var1, var2 + "background", var2 + "foreground", var2 + "font");
- LookAndFeel.installBorder(var1, var2 + "border");
- }
-
- protected void installKeyboardActions(AbstractButton var1) {
- BasicButtonListener var2 = (BasicButtonListener)((JComponent)var1).getClientProperty(this);
- if (var2 != null) {
- var2.installKeyboardActions(var1);
- }
-
- }
-
- protected void installListeners(AbstractButton var1) {
- BasicButtonListener var2 = this.createButtonListener(var1);
- if (var2 != null) {
- ((JComponent)var1).putClientProperty(this, var2);
- ((Component)var1).addMouseListener(var2);
- ((Component)var1).addMouseMotionListener(var2);
- ((Component)var1).addFocusListener(var2);
- ((JComponent)var1).addPropertyChangeListener(var2);
- var1.addChangeListener(var2);
- }
-
- }
-
- public void installUI(JComponent var1) {
- this.installDefaults((AbstractButton)var1);
- this.installListeners((AbstractButton)var1);
- this.installKeyboardActions((AbstractButton)var1);
- BasicHTML.updateRenderer(var1, ((AbstractButton)var1).getText());
- }
-
- public void paint(Graphics var1, JComponent var2) {
- AbstractButton var3 = (AbstractButton)var2;
- ButtonModel var4 = var3.getModel();
- FontMetrics var5 = var1.getFontMetrics();
- Insets var6 = var2.getInsets();
- viewRect.x = var6.left;
- viewRect.y = var6.top;
- viewRect.width = ((JComponent)var3).getWidth() - (var6.right + viewRect.x);
- viewRect.height = ((JComponent)var3).getHeight() - (var6.bottom + viewRect.y);
- textRect.x = textRect.y = textRect.width = textRect.height = 0;
- iconRect.x = iconRect.y = iconRect.width = iconRect.height = 0;
- Font var7 = ((Component)var2).getFont();
- var1.setFont(var7);
- String var8 = SwingUtilities.layoutCompoundLabel(var2, var5, var3.getText(), var3.getIcon(), var3.getVerticalAlignment(), var3.getHorizontalAlignment(), var3.getVerticalTextPosition(), var3.getHorizontalTextPosition(), viewRect, iconRect, textRect, var3.getText() == null ? 0 : this.defaultTextIconGap);
- this.clearTextShiftOffset();
- if (var4.isArmed() && var4.isPressed()) {
- this.paintButtonPressed(var1, var3);
- }
-
- if (var3.getIcon() != null) {
- this.paintIcon(var1, var2, iconRect);
- }
-
- if (var8 != null && !var8.equals("")) {
- View var9 = (View)var2.getClientProperty("html");
- if (var9 != null) {
- var9.paint(var1, textRect);
- } else {
- this.paintText(var1, var2, textRect, var8);
- }
- }
-
- if (var3.isFocusPainted() && ((JComponent)var3).hasFocus()) {
- this.paintFocus(var1, var3, viewRect, textRect, iconRect);
- }
-
- }
-
- protected void paintButtonPressed(Graphics var1, AbstractButton var2) {
- }
-
- protected void paintFocus(Graphics var1, AbstractButton var2, Rectangle var3, Rectangle var4, Rectangle var5) {
- }
-
- protected void paintIcon(Graphics var1, JComponent var2, Rectangle var3) {
- AbstractButton var4 = (AbstractButton)var2;
- ButtonModel var5 = var4.getModel();
- Icon var6 = null;
- if (!var5.isEnabled()) {
- var6 = var4.getDisabledIcon();
- } else if (var5.isPressed() && var5.isArmed()) {
- var6 = var4.getPressedIcon();
- if (var6 == null) {
- var6 = var4.getIcon();
- } else {
- this.clearTextShiftOffset();
- }
- } else if (var4.isRolloverEnabled() && var5.isRollover()) {
- var6 = var4.getRolloverIcon();
- }
-
- if (var6 == null) {
- var6 = var4.getIcon();
- }
-
- if (var5.isPressed() && var5.isArmed()) {
- var6.paintIcon(var2, var1, var3.x + this.getTextShiftOffset(), var3.y + this.getTextShiftOffset());
- } else {
- var6.paintIcon(var2, var1, var3.x, var3.y);
- }
-
- }
-
- protected void paintText(Graphics var1, JComponent var2, Rectangle var3, String var4) {
- AbstractButton var5 = (AbstractButton)var2;
- ButtonModel var6 = var5.getModel();
- FontMetrics var7 = var1.getFontMetrics();
- if (var6.isEnabled()) {
- var1.setColor(((Component)var5).getForeground());
- BasicGraphicsUtils.drawString(var1, var4, var6.getMnemonic(), var3.x + this.getTextShiftOffset(), var3.y + var7.getAscent() + this.getTextShiftOffset());
- } else {
- var1.setColor(((Component)var5).getBackground().brighter());
- BasicGraphicsUtils.drawString(var1, var4, var6.getMnemonic(), var3.x, var3.y + var7.getAscent());
- var1.setColor(((Component)var5).getBackground().darker());
- BasicGraphicsUtils.drawString(var1, var4, var6.getMnemonic(), var3.x - 1, var3.y + var7.getAscent() - 1);
- }
-
- }
-
- protected void setTextShiftOffset() {
- this.shiftOffset = this.defaultTextShiftOffset;
- }
-
- protected void uninstallDefaults(AbstractButton var1) {
- LookAndFeel.uninstallBorder(var1);
- this.defaults_initialized = false;
- }
-
- protected void uninstallKeyboardActions(AbstractButton var1) {
- BasicButtonListener var2 = (BasicButtonListener)((JComponent)var1).getClientProperty(this);
- if (var2 != null) {
- var2.uninstallKeyboardActions(var1);
- }
-
- }
-
- protected void uninstallListeners(AbstractButton var1) {
- BasicButtonListener var2 = (BasicButtonListener)((JComponent)var1).getClientProperty(this);
- ((JComponent)var1).putClientProperty(this, (Object)null);
- if (var2 != null) {
- ((Component)var1).removeMouseListener(var2);
- ((Component)var1).removeMouseListener(var2);
- ((Component)var1).removeMouseMotionListener(var2);
- ((Component)var1).removeFocusListener(var2);
- var1.removeChangeListener(var2);
- ((JComponent)var1).removePropertyChangeListener(var2);
- }
-
- }
-
- public void uninstallUI(JComponent var1) {
- this.uninstallKeyboardActions((AbstractButton)var1);
- this.uninstallListeners((AbstractButton)var1);
- this.uninstallDefaults((AbstractButton)var1);
- BasicHTML.updateRenderer(var1, "");
- }
- }
-